package day18.Junit_reflect_annotation_proxy.proxydemo;

import org.junit.Test;

import java.util.Arrays;

public class demo1
{
    @Test
    public void func1()
    {
        Star star=new Star("章若楠");//你要为章若楠创建代理，你不得把章若楠传进去给他包装成一个代理类对象（增强的章若楠）
        Star_Aciton sa=ProxtUtil.CreateProxy(star);//为star（接口的实现类对象）创建代理
        sa.sing("天天");//这个调的是代理的sing方法，所以说会有一些杂活出现
        System.out.println(sa.dance("魅力"));

        System.out.println("*************************");
        //更广泛的尝试
        Book book1 = new Book();
        Book_Actions ba=ProxtUtil.CreateProxy(book1);//为book创建代理
        ba.buy("123");

    }







    @Test//测试数组的一些知识点
    public  void test2()
    {
        String []arr1={"hello","world","java"};
        int a[]=new int[] {1,2,3};;
        System.out.println(a);
        System.out.println(arr1);
        Object[] arr2 =new Object[3];
        arr2[0] = arr1;
        System.out.println(arr2.length);
        System.out.println(Arrays.toString(arr2));
        System.out.println(Arrays.toString((Object[])arr2[0]));
//        没法直接打印数组，只能调用工具类的Arrays.toString()方法
//        arr2的第一个Object元素接到了整个数组，所以arr2[1],arr2[2]都是null，
//        要打印arr2[0]的话，他是个数组类型，那只能调工具类的ToString方法，但是参数是个数组类型，
//        你必须从Object类型，转换成Object[]类型，把父类Object类型强制转换成子类Object[]类型
    }

}
